/* -------------------------------------- */
// demo 1
/* -------------------------------------- */
class Phone {
  get price() {
    console.log("价格属性被读取了");
    return "iloveyou";
  }
  set price(newVal) {
    console.log("价格属性被修改了");
  }
}
let s = new Phone();
console.log(s.price); // >
/* ------------------------------- */
//结果; 1 行价格属性被读取了2行  iloveyou

/* ------------------------------- */
// demo2
/* ------------------------------- */

var obj = {
  a: 3,
  b: 8,
  get val() {
    return this.a;
  },
  set val(n) {
    this.a = n;
  },
};
console.log(obj.val); //3
obj.val = 100;
console.log(obj.val); //100
console.log(obj);

/* ------------------------------- */
//结果; 1 行 3     2行   100      3行  {a:100,b:8,val:[Getter/Setter]}
//JS中的getter和setter
//对象有两种属性：（1）数据属性，就是我们经常使用的属性（2）访问器属性，也称存取器属性

//存取器属性就是一组获取和设置值的函数。getter负责获取值，它不带任何参数。
//setter负责设置值，在它的函数体中，一切的return都是无效的
//在对象内如果设置了存取器属性，如果某一变量只声明了getter方法，那么它仅仅只可读而不可写。
//如果只声明了setter方法，那么读到的该变量值永远都是undefined。
//setter和getter方法在定义时并未用function关键字
